const express = require('express');
const router = express.Router();

// 数据库配置文件
const db  = require('../Mysql/index')
const bcrypt = require('bcrypt');
// 密码加密
const jm = require('bcryptjs')
let sql;

// 增加产品
router.post('/Admin/addShopType', (req, res) => {
    // 获取请求体中的参数
    const { name,type,age,shop_id,is_show,addmoney } = req.body;
    const data = req.body;
    const sql=`INSERT INTO goods_type (name,type,age,shop_id,is_show,addmoney) VALUES(?,?,?,?,?,?);`

    db.query(sql,[name,type,age,shop_id,is_show,addmoney], (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }
        // 检查是否有行被更改
        if (result.affectedRows === 0) {
            return res.cc("新增失败!");
        }
        // 返回成功信息
        res.cc("",1,"新增成功!",);
    });
});
// 删除产品
router.post('/Admin/deleteShopType', (req, res) => {
    // 获取请求体中的参数
    const { id } = req.body;
    const data = req.body;
    const sql=`DELETE FROM goods_type where id=?`

    db.query(sql,id, (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }
        // 检查是否有行被删除
        if (result.affectedRows === 0) {
            return res.cc("删除失败!");
        }
        // 返回成功信息
        res.cc("",1,"删除成功!",);
    });
});
// 更改产品
router.post('/Admin/updateShopType', (req, res) => {
    // 获取请求体中的参数
    const { id } = req.body; // 必须包含 id 和 shopUserId
    const updates = {};
    // 检查参数是否存在
    if (!id) {
        return res.cc("缺少必要的参数: id");
    }

    // 动态构建更新字段
    for (const key in req.body) {
        if (key !== 'id') { // 排除 id 和 shopUserId
            updates[key] = req.body[key];
        }
    }
    // 确保至少有一个字段需要更新
    if (Object.keys(updates).length === 0) {
        return res.cc("没有提供任何可更新的字段");
    }

    // 构建 SQL 更新语句
    const setClause = Object.keys(updates).map(key => `${key} = ?`).join(', ');
    const sql = `UPDATE goods_type SET ${setClause} WHERE id = ?`;

    // 执行更新操作
    const sqlValues = [...Object.values(updates), id];

    db.query(sql, sqlValues, (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        // 检查是否有行被更改
        if (result.affectedRows === 0) {
            return res.cc("未找到对应的商品分类或未进行任何修改");
        }
        // 返回成功信息
        res.cc("",1,"产品修改成功",);
    });
});
// 查询所有产品
router.get('/Admin/getShopTypeList', (req, res) => {
    // 获取查询参数
    const data = req.query;
    const limit = parseInt(data.limit) || null; // 如果没有传limit，则设为null，表示查询全部
    const page = parseInt(data.page) || 1; // 当前页，默认为第1页
    const offset = limit ? (page - 1) * limit : 0; // 如果传了limit，则进行分页，否则offset为0

    // 检查是否提供了 shop_id 参数
    const shopUserId = data.shop_id;
    if (!shopUserId) {
        return res.cc("查询失败，缺少 shop_id 参数");
    }

    // 构建基本的 SQL 查询
    let sql = `
        SELECT s.*, g.name
        FROM goods_type s
        LEFT JOIN goods_title g ON s.type = g.id
        WHERE s.shop_id = ?
    `;

    // 存储 SQL 查询条件和参数
    const conditions = [];
    const params = [shopUserId]; // 初始化参数数组

    // 动态添加额外的查询条件
    if (data.type) {
        conditions.push(`s.type = ?`);
        params.push(data.type); // 如果传了 type，添加条件
    }

    // 如果有额外条件，合并到 SQL 查询中
    if (conditions.length > 0) {
        sql += ' AND ' + conditions.join(' AND ');
    }

    // 添加分页限制，如果有 limit 和 page 参数
    if (limit) {
        sql += ' LIMIT ? OFFSET ?';
        params.push(limit, offset); // 添加 limit 和 offset 到参数数组
    }

    // 执行查询
    db.query(sql, params, (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc("没有找到相关数据");
        }

        // 如果有分页查询，查询总记录数以便返回分页的总页数
        if (limit) {
            let countSql = `
                SELECT COUNT(*) AS total 
                FROM goods_type 
                WHERE shop_id = ?
            `;

            // 查询总数
            db.query(countSql, [shopUserId], (countErr, countResult) => {
                if (countErr) {
                    console.error(countErr);
                    return res.send({ err: countErr });
                }

                const total = countResult[0].total; // 总记录数
                const totalPages = Math.ceil(total / limit); // 计算总页数

                // 返回数据，包括商品分类数据、当前页码、每页条数、总记录数和总页数
                res.cc({
                    data: result, // 当前页的数据
                    currentPage: page,
                    pageSize: limit,
                    count: total,
                    totalPages: totalPages
                }, 1, "查询成功");
            });
        } else {
            // 如果没有 limit，直接返回所有查询结果
            res.cc({
                data: result
            }, 1, "查询成功");
        }
    });
});
// 查询产品分类
router.get('/Admin/getShopClass', (req, res) => {
    // 获取查询参数
    const data = req.query;

    // 检查是否提供了 shop_id 参数
    const shopUserId = data.shop_id;
    if (!shopUserId) {
        return res.cc("查询失败，缺少 shop_id 参数");
    }
    // 构建基本的 SQL 查询
    let sql = `
        SELECT *
        FROM goods_title
        WHERE shop_id = ?
    `;

    // 执行查询
    db.query(sql, [shopUserId], (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc( "没有找到相关数据");
        }
        res.cc({
            data: result,
        }, 1, "查询成功");

    });
});
module.exports = router;
